Crate sprs[][src]

sprs is a sparse linear algebra library for Rust.

It features a sparse matrix type, CsMat, and a sparse vector type, CsVec, both based on the compressed storage scheme.

Features

  • sparse matrix/sparse matrix addition, multiplication.
  • sparse vector/sparse vector addition, dot product.
  • sparse matrix/dense matrix addition, multiplication.
  • sparse triangular solves.
  • powerful iteration over the sparse structure, enabling easy extension of the library.
  • matrix construction using the triplet format, vertical and horizontal stacking, block construction.
  • sparse cholesky solver in the separate crate sprs-ldl.
  • fully generic integer type for the storage of indices, enabling compact representations.
  • planned interoperability with existing sparse solvers such as SuiteSparse.

Quick Examples

Matrix construction:

use sprs::TriMat;

let mut a = TriMat::new((4, 4));
a.add_triplet(0, 0, 3.0_f64);
a.add_triplet(1, 2, 2.0);
a.add_triplet(3, 0, -2.0);

// This matrix type does not allow computations, and must to
// converted to a compatible sparse type, using for example
let b = a.to_csr();

Constructing matrix using the more efficient direct sparse constructor

use sprs::{CsMat, CsVec};
let eye : CsMat<f64> = CsMat::eye(3);
let a = CsMat::new_csc((3, 3),
                       vec![0, 2, 4, 5],
                       vec![0, 1, 0, 2, 2],
                       vec![1., 2., 3., 4., 5.]);

Matrix vector multiplication:

use sprs::{CsMat, CsVec};
let eye = CsMat::eye(5);
let x = CsVec::new(5, vec![0, 2, 4], vec![1., 2., 3.]);
let y = &eye * &x;
assert_eq!(x, y);

Matrix matrix multiplication, addition:

use sprs::{CsMat, CsVec};
let eye = CsMat::eye(3);
let a = CsMat::new_csc((3, 3),
                       vec![0, 2, 4, 5],
                       vec![0, 1, 0, 2, 2],
                       vec![1., 2., 3., 4., 5.]);
let b = &eye * &a;
assert_eq!(a, b.to_csc());

Re-exports

pub use crate::indexing::SpIndex;
pub use crate::sparse::CompressedStorage::CSC;
pub use crate::sparse::CompressedStorage::CSR;
pub use SymmetryCheck::*;
pub use PermutationCheck::*;

Modules

approx

Traits for comparing vectors and matrices using the approx traits

array_backend

Fixed size arrays usable for sparse matrices.

binop
errors

Error type for sprs

indexing
io

Serialization and deserialization of sparse matrices

linalg
num_kinds

Trait to be able to know at runtime if a generic scalar is an integer, a float or a complex.

prod
smmp

Implementation of the paper Bank and Douglas, 2001, Sparse Matrix Multiplication Package (SMPP)

special_mats
stack
vec
visu

Structs

CsIter
CsMatBase

Compressed matrix in the CSR or CSC format, with sorted indices.

CsVecBase

A sparse vector, storing the indices of its non-zero data.

OuterIterator

Iterator on the matrix’ outer dimension Implemented over an iterator on the indptr array

OuterIteratorMut

Iterator on the matrix’ outer dimension Implemented over an iterator on the indptr array

OuterIteratorPerm

Iterator on the matrix’ outer dimension, permuted Implemented over an iterator on the indptr array

Permutation
TriMatBase

Sparse matrix in the triplet format.

TriMatIter

An iterator over elements of a sparse matrix, in the triplet format

Enums

CompressedStorage

Describe the storage of a CsMat

FillInReduction

The different kinds of fill-in-reduction algorithms supported by sprs

PermutationCheck

Configuration enum to ask for permutation checks in algorithms

SymmetryCheck

Configuration enum to ask for symmetry checks in algorithms

Traits

SparseMat

A trait for common members of sparse matrices

Functions

assign_to_dense

Assign a sparse matrix into a dense matrix

bmat

Specify a sparse matrix by constructing it from blocks of other matrices

hstack

Construct a sparse matrix by horizontally stacking other matrices

is_symmetric
kronecker_product

Compute the Kronecker product between two matrices

perm_is_valid
transform_mat_papt

Compute the square matrix resulting from the product P * A * P^T

vstack

Construct a sparse matrix by vertically stacking other matrices

Type Definitions

CsMat
CsMatI
CsMatVecView
CsMatView
CsMatViewI
CsMatViewMut
CsMatViewMutI
CsStructure
CsStructureI
CsStructureView
CsStructureViewI
CsVec
CsVecI
CsVecView
CsVecViewI
CsVecViewMut
CsVecViewMutI
Ix1
Ix2
PermOwned
PermOwnedI
PermView
PermViewI
Shape

The shape of a matrix. This a 2-tuple with the first element indicating the number of rows, and the second element indicating the number of columns.

SpRes
TriMat
TriMatI
TriMatView
TriMatViewI
TriMatViewMut
TriMatViewMutI